home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / rb / jlcd100.lzh / TNB_FSW / CLUNCG00.Lzh / CLUNCHG.c next >
Text File  |  1996-06-12  |  3KB  |  151 lines

  1. //#include    <TNB.H>
  2. #include    <CDC_CLIB.H>
  3.  
  4.  
  5. int    main(argc,argv)
  6. int    argc;
  7. char    **argv;
  8. {
  9. int    i,j,m,n,x,y,z;
  10. int    ol,oll,ll;
  11. int    cl=-1;        //目的 LUN
  12. int    ct1=-1;        //目的 MSF 総演奏時間
  13. int    ct2=-1;        //目的 MSF 1曲目の演奏時間
  14. char    *arg;
  15. struct CDC_TRACKS_PTR *CTP;
  16. struct CDC_ATRACK_PTR *CAP;
  17.  
  18. printf("X68k CDC LUN CHAINGER Version 0.00 Copyright 1996 TNB製作所\n");
  19. if ( argc==1 ){
  20.     help();
  21.     return(0);
  22. }
  23. /* オプション解析処理 */
  24. for(j=1;j<argc;j++){
  25.     arg=argv[j];
  26.     if( arg[0] == '-' || arg[0] == '/' ){
  27.         switch(arg[1]|0x20){
  28.         case('l'):
  29.             i=(arg[2]-'0');
  30.             if ( i<0 || i>7 ){
  31.                 printf("LUN指定が範囲外です\n");
  32.                 return(-1);
  33.             }
  34.             cl=i;
  35.             break;
  36.         case('t'):
  37.             i=(arg[2]-'0');
  38.             if ( i<1 || i>8 ){
  39.                 printf("LUN指定が範囲外です\n");
  40.                 return(-1);
  41.             }
  42.             cl=(i-1);
  43.             break;
  44.         case '?':
  45.         case 'h':
  46.         default:
  47.             help();
  48.             return(0);
  49.         }
  50.     } else {
  51.         /* MSFチェック */
  52.         int    mm,ss,ff;
  53.         char    buf[16];
  54.         i=sscanf( &arg[0],"%d%1s%d%1s%d",&mm,buf,&ss,buf,&ff );
  55.         if ( i!=5 ){
  56.             printf("スイッチが異常です\n");
  57.             return(-1);
  58.         }
  59.         i= mm*0x10000 + ss*0x100 + ff;
  60.         if ( ct1<0 ){
  61.             //目的 MSF 総演奏時間
  62.             ct1=i;
  63.         } else if ( ct2<0 ){
  64.             //目的 MSF 1曲目の演奏時間
  65.             ct2=i;
  66.         } else {
  67.             printf("time 指定が多すぎます\n");
  68.             return(-1);
  69.         }
  70.     }
  71. }
  72.  
  73. //    printf("cl=%d,ct1=%d,ct2=%d\n",cl,ct1,ct2);
  74.  
  75.  
  76. if ( CDC_CHK()==0 ){
  77.     printf("CDC.x が常駐していません\n");
  78.     return(-1);
  79. }
  80. if ( cl<0 && ct1<0 && ct2<0 ){
  81.     printf("指定がありません\n");
  82.     return(-1);
  83. }
  84. ol=CDC_CHGLUN( -1 );
  85. oll=ol;
  86. if ( ol==100 || ol<0 )
  87.     ol=0;        //現在の LUN
  88. if ( cl>=0 ){
  89.     //トレイ変更!
  90.     i=CDC_CHGLUN(cl);
  91.     if ( i<0 ){
  92.         printf("CDC_CHGLUN でエラーが出ました\n");
  93.         return(-1);
  94.     }
  95.     if ( oll==cl )
  96.         printf("トレイはそのままです。\n");
  97.     else    printf("トレイを切り換えました。\n");
  98.     return(0);
  99. }
  100. for(ll=0;ll<=7;ll++){
  101.     if ( CDC_CHGLUN( ll )<0 ){
  102.             printf("CHGLUNでエラー\n");
  103.         continue;
  104.     }
  105.     CTP = CDC_TRACKS();
  106.     if ( (CTP->CDLONG)!=ct1 ){
  107.             printf("総演奏時間不一致\n");
  108.         continue;
  109.     }
  110.     if ( ct2>=0 ){
  111.         CAP= CDC_ATRACK(1);
  112.         if ( ((CAP->LONG)&0x00FFFFFF)!=ct2 ){
  113.                 printf("1曲目の演奏時間不一致\n");
  114.             continue;
  115.         }
  116.     }
  117.     if ( oll==ll )
  118.         printf("トレイはそのままです。\n");
  119.     else    printf("トレイを切り換えました。\n");
  120.     return(0);
  121. }
  122. printf("目的の総演奏時間の CD がありませんでした\n");
  123. CDC_CHGLUN( ol );
  124. return(1);
  125. }
  126. /**************************
  127.     ヘルプ
  128. *************************/
  129. void    help()
  130. {
  131. printf(
  132.     "\n"
  133.     "使用法: CLUNCHG [time1[ time2]] | [switch]\n"
  134.     "\n"
  135.     "  [time ]\n"
  136.     "    time1 は 目的の CD の総演奏時間(MSF表記)。\n"
  137.     "    time2 は 目的の CD の1曲目の演奏時間。省略出来ます(MSF表記)。\n"
  138.     "        MSF表記= 分:秒:セクタ。例えば 27分11秒11 なら 27:11:11\n"
  139.     "\n"
  140.     "  [switch]\n"
  141.     "    /L[n] ・・・・・・・ LUN n に切り換えます。\n"
  142.     "    /T[n] ・・・・・・・ TRAY n に切り換えます。\n"
  143.     "\n"
  144.     "        [EXITCODE] 0: 正常終了\n"
  145.     "               1: 目的の総演奏時間の CD がなかった\n"
  146.     "              -1: スイッチエラー\n"
  147.     "\n"
  148. );
  149. }
  150.  
  151.